As one type of nonvolatile semiconductor storage device, a NAND flash memory is known. A NAND flash memory erases data for each block. Each block is constituted by a plurality of pages. Date write and read operations are executed for each page.
A NAND flash memory cannot overwrite data, and hence it is necessary to write data in a newly prepared block to perform data overwriting. More specifically, when data of a page of a first block to which data has been written is overwritten, it is necessary to perform the copy processing of writing data, of the data of the first block, which is obtained by changing data to be overwritten to a second block in which data has been erased.
In copy processing, for example, the controller reads data from the NAND flash memory once, and then performs error detection of the read data by using an ECC circuit. If no error is detected, the controller writes the data to the NAND flash memory. If an error is detected, the controller corrects the error by using the ECC circuit, and writes the error-corrected data to the NAND flash memory. This takes much time for the copy processing. As data overwriting occurs frequently, the amount of copy processing increases. This increases the load of copy processing on the controller.